levelbar: update css nodes even when no offset value is found
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Wed, 2 Nov 2016 02:46:10 +0000 (00:46 -0200)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 4 Nov 2016 16:38:21 +0000 (12:38 -0400)
GtkLevelBar supports adding custom offsets as style classes, and they
are applied whenever the :value property matches. The current code,
however, only updates any CSS nodes when an offset is found, causing
it to not update when a discrete value changes but no custom offset
is added.

Fix that by always updating the CSS nodes.

https://bugzilla.gnome.org/show_bug.cgi?id=773799

gtk/gtklevelbar.c

index f7229f5934d7950943f96bd0ea7e84e8f3435158..33bf44cd790ffe27a6ac3d115bebddd27fe38c86 100644 (file)
@@ -644,9 +644,12 @@ update_level_style_classes (GtkLevelBar *self)
 {
   GtkLevelBarPrivate *priv = self->priv;
   gdouble value;
+  const gchar *classes[3] = { NULL, NULL, NULL };
   const gchar *value_class = NULL;
   GtkLevelBarOffset *offset, *prev_offset;
   GList *l;
+  gint num_filled, num_blocks, i;
+  gboolean inverted;
 
   value = gtk_level_bar_get_value (self);
 
@@ -673,30 +676,23 @@ update_level_style_classes (GtkLevelBar *self)
         break;
     }
 
-  if (value_class)
-    {
-      const gchar *classes[3] = { NULL, NULL, NULL };
-      gint num_filled, num_blocks, i;
-      gboolean inverted;
-
-      inverted = gtk_level_bar_get_real_inverted (self);
-      num_blocks = gtk_level_bar_get_num_block_nodes (self);
+  inverted = gtk_level_bar_get_real_inverted (self);
+  num_blocks = gtk_level_bar_get_num_block_nodes (self);
 
-      if (priv->bar_mode == GTK_LEVEL_BAR_MODE_CONTINUOUS)
-        num_filled = 1;
-      else
-        num_filled = MIN (num_blocks, (gint) round (priv->cur_value) - (gint) round (priv->min_value));
+  if (priv->bar_mode == GTK_LEVEL_BAR_MODE_CONTINUOUS)
+    num_filled = 1;
+  else
+    num_filled = MIN (num_blocks, (gint) round (priv->cur_value) - (gint) round (priv->min_value));
 
-      classes[0] = "filled";
-      classes[1] = value_class;
-      for (i = 0; i < num_filled; i++)
-        gtk_css_node_set_classes (gtk_css_gadget_get_node (priv->block_gadget[inverted ? num_blocks - 1 - i : i]), classes);
+  classes[0] = "filled";
+  classes[1] = value_class;
+  for (i = 0; i < num_filled; i++)
+    gtk_css_node_set_classes (gtk_css_gadget_get_node (priv->block_gadget[inverted ? num_blocks - 1 - i : i]), classes);
 
-      classes[0] = "empty";
-      classes[1] = NULL;
-      for (; i < num_blocks; i++)
-        gtk_css_node_set_classes (gtk_css_gadget_get_node (priv->block_gadget[inverted ? num_blocks - 1 - i : i]), classes);
-    }
+  classes[0] = "empty";
+  classes[1] = NULL;
+  for (; i < num_blocks; i++)
+    gtk_css_node_set_classes (gtk_css_gadget_get_node (priv->block_gadget[inverted ? num_blocks - 1 - i : i]), classes);
 }
 
 static void